package com.gin.supermarket_inventory_system.commodity.service;

import com.gin.supermarket_inventory_system.commodity.dto.vo.CommodityVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 * 商品查询服务
 * @since : 2023/10/10 16:06
 * @author : ginstone
 * @version : v1.0.0
 **/
@Service
@RequiredArgsConstructor
public class CommodityQueryService {
    private final CommodityService commodityService;
    private final CommodityTypeService commodityTypeService;
    private final CommodityProducerService commodityProducerService;

    /**
     * 为商品信息填充数据(类型全名,生产商名称等）
     * @param data 商品信息
     */
    public void fillCommodityData(Collection<CommodityVo> data) {
        final HashMap<Long, String> fullNameMap = commodityTypeService.getFullNameMap();
        final HashMap<Long, String> nameMap = commodityProducerService.getNameMap();

        data.forEach(i -> {
            // 填充类型全名
            i.setTypeName(fullNameMap.get(i.getTypeId()));
            // 填充生产商名称
            i.setProducerName(nameMap.get(i.getProducerId()));
        });
    }

    /**
     * 根据ID查询商品信息
     * @param id 商品信息id
     * @return 商品信息
     */
    public List<CommodityVo> listByIds(Set<Long> id) {
        final List<CommodityVo> data = commodityService.listByIds(id).stream().map(CommodityVo::new).toList();
        //填充数据
        fillCommodityData(data);
        return data;
    }
}
